Fine-tune the proximity hovering for scrollbars
authorMatthias Clasen <mclasen@redhat.com>
Sun, 18 Jan 2015 19:28:47 +0000 (14:28 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 18 Jan 2015 19:28:47 +0000 (14:28 -0500)
Reduce the distance at which we expand the scrollbar,
and add some hysteresis.

gtk/gtkscrolledwindow.c

index e1128e0340849c88fe0c31ceb47424f9152e8aa8..3806d738f02b0f7879baf29eb3a88bdaa0fa40d8 100644 (file)
 #define INDICATOR_FADE_OUT_DELAY 2000
 #define INDICATOR_FADE_OUT_DURATION 1000
 #define INDICATOR_FADE_OUT_TIME 500
-#define INDICATOR_CLOSE_DISTANCE 50
+#define INDICATOR_CLOSE_DISTANCE 10
+#define INDICATOR_FAR_DISTANCE 20
 
 /* Scrolled off indication */
 #define UNDERSHOOT_SIZE 40
@@ -966,6 +967,7 @@ event_close_to_indicator (GtkScrolledWindow *sw,
   GtkWidget *event_widget;
   gint win_x, win_y;
   gdouble x, y;
+  gint distance;
 
   priv = sw->priv;
   event_widget = gtk_get_event_widget (event);
@@ -988,12 +990,17 @@ event_close_to_indicator (GtkScrolledWindow *sw,
       y = ycoord;
     }
 
+  if (indicator->over)
+    distance = INDICATOR_FAR_DISTANCE;
+  else
+    distance = INDICATOR_CLOSE_DISTANCE;
+
   if ((indicator == &priv->hindicator &&
-       y >= win_y - INDICATOR_CLOSE_DISTANCE &&
-       y < win_y + indicator_alloc.height + INDICATOR_CLOSE_DISTANCE) ||
+       y >= win_y - distance &&
+       y < win_y + indicator_alloc.height + distance) ||
       (indicator == &priv->vindicator &&
-       x >= win_x - INDICATOR_CLOSE_DISTANCE  &&
-       x < win_x + indicator_alloc.width + INDICATOR_CLOSE_DISTANCE))
+       x >= win_x - distance &&
+       x < win_x + indicator_alloc.width + distance))
     return TRUE;
 
   return FALSE;